home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / amp-calc.bas (.txt) next >
Encoding:
GW-BASIC  |  1980-01-01  |  16.4 KB  |  384 lines

  1. 10  REM AMP-CALC V3.2 ***** 4/27/83 *********
  2. 15  PI=3.1416
  3. 17  PRINT:PRINT,"K2UYH  ----  MODIFIED IBM PC --- WA2TIF  "
  4. 20  REM PRECISION 4: REM ******** COMPLEX ARITHMATIC ROUTEENS ******
  5. 30  DIM SR(2,2), SX(2,2), SM(2,2), SA(2,2), ZR(2), ZX(2)
  6. 40  DIM GR(2), GX(2), GM(2), GA(2), RZ(2), XZ(2), PR(4), PX(4)
  7. 50  DIM CR(2), CX(2), CM(2), CA(2)
  8. 60  DIM XG(2), RG(2), MG(2), AG(2): DG=180/PI: Z0=50
  9. 70  DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
  10. 80  DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
  11. 90  DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
  12. 100  DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
  13. 110  DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
  14. 140  DEF FNR(MG,AG)=MG*COS(AG/DG)
  15. 150  DEF FNX(MG,AG)=MG*SIN(AG/DG)
  16. 160  REM ********** INITIAL & S PARAMETER I/O *************
  17. 170  PRINT: PRINT "PROGRAM FOR CALCULATING SMALL SIGNAL AMPLIFIER CHARTERISTICS"
  18. 180  PRINT: PRINT "S PARAMETER ANGLES IN DEGREES"
  19. 190  PRINT:INPUT"PARAMETER FORM = ('POL' OR 'RECT' OR 'FILE')";Q$
  20. 200  IF Q$="POL" THEN 240 ELSE IF Q$="RECT" THEN 300 ELSE IF Q$="FILE" THEN 210 ELSE 190
  21. 210  PRINT: INPUT "PARAMETER FILE NAME OR DIR OR QUIT"; F$: PRINT
  22. 220  IF F$="DIR" THEN DIR "*.S": GOTO 210 ELSE IF F$="QUIT" THEN 190 ELSE F$=F$+".S"
  23. 230  OPEN #1,"I",F$: MAT READ #1, SR, SX, SM, SA: GOTO 390
  24. 240  FOR J=1 TO 2: FOR I=1 TO 2
  25. 250  PRINT "MAG OF S("; I; ","; J; ")=";: INPUT SM(I,J)
  26. 260  PRINT "ANG OF S("; I; ","; J; ")=";: INPUT SA(I,J)
  27. 270  SR(I,J)=FNR(SM(I,J),SA(I,J)): PRINT "REAL S("; I; ","; J; ")="; SR(I,J)
  28. 280  SX(I,J)=FNX(SM(I,J),SA(I,J)): PRINT "IMAG. S("; I; ","; J; ")="; SX(I,J)
  29. 290  PRINT: NEXT: NEXT: GOTO 360
  30. 300  FOR J=1 TO 2: FOR I=1 TO 2
  31. 310  PRINT "REAL OF S("; I; ","; J; ")=";: INPUT SR(I,J)
  32. 320  PRINT "IMG OF S("; I; ","; J; ")=";: INPUT SX(I,J)
  33. 330  SM(I,J)=FNMG(SR(I,J),SX(I,J)): PRINT "MAG S("; I; ","; J; ")="; SM(I,J)
  34. 335  GOSUB 3640
  35. 340  SA(I,J)=FNAG(SR(I,J),SX(I,J)): PRINT "ANGLE S("; I; ","; J; ")="; SA(I,J)
  36. 350  PRINT: NEXT: NEXT
  37. 360  INPUT "WANT TO SAVE FILE (Y/N)"; Q$: IF Q$<>"Y" THEN 390
  38. 370  INPUT"FILE NAME";F$:F$=F$+".S":ERASE F$:OPEN #1,"O",F$
  39. 380  MAT WRITE #1,SR,SX,SM,SA: CLOSE #1
  40. 390  REM ********** COMMON PROD AND N AND M MATRIX *********
  41. 400  PR(1)=FNMR(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
  42. 410  PX(1)=FNMX(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
  43. 420  PR(2)=FNMR(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
  44. 430  PX(2)=FNMX(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
  45. 440  RD=PR(2)-PR(1): XD=PX(2)-PX(1)
  46. 450  RN=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
  47. 460  XN=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
  48. 470  RM=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
  49. 480  XM=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
  50. 490  GOSUB 510: GOSUB 600: GOTO 690
  51. 500  REM ************* SOURCE Z MODULE ********************
  52. 510  PRINT: INPUT "REAL OF SOURCE Z ="; ZR(1): ZR(1)=ZR(1)/Z0
  53. 520  INPUT "IMG OF SOURCE Z ="; ZX(1): IF ZX(1)= 0 THEN ZX(1)=0.01
  54. 530  ZX(1)=ZX(1)/Z0
  55. 540  GR(1)=FNDR(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
  56. 550  GX(1)=FNDX(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
  57. 555  GOSUB 3640
  58. 560  GM(1)=FNMG(GR(1),GX(1)): GA(1)=FNAG(GR(1),GX(1))
  59. 570  PRINT "SOURCE REF COEF MAG ="; GM(1)
  60. 580  PRINT "SOURCE REF COEF ANG ="; GA(1): RETURN
  61. 590  REM ************** LOAD Z MODULE **********************
  62. 600  PRINT: INPUT "REAL OF LOAD Z ="; ZR(2): ZR(2)=ZR(2)/Z0
  63. 610  INPUT "IMG OF LOAD Z ="; ZX(2): IF ZX(2)=0 THEN ZX(2)=0.01
  64. 620  ZX(2)=ZX(2)/Z0
  65. 630  GR(2)=FNDR(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
  66. 640  GX(2)=FNDX(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
  67. 645  GOSUB 3640
  68. 650  GM(2)=FNMG(GR(2),GX(2)): GA(2)=FNAG(GR(2),GX(2))
  69. 660  PRINT "LOAD REF COEF MAG ="; GM(2)
  70. 670  PRINT "LOAD REF COEF ANG ="; GA(2): RETURN
  71. 680  REM *************** MENUE *************************
  72. 690  PRINT: PRINT " WANT TO :"
  73. 700  PRINT "     CALCULATE Z INPUT ---------------- ZI
  74. 710  PRINT "     CALCULATE Z OUT ------------------ ZO"
  75. 720  PRINT "     CALCULATE VOLTAGE GAIN ----------- VG"
  76. 730  PRINT "     CALCULATE POWER GAIN ------------- PG"
  77. 740  PRINT "     CALCULATE AVAIL PWR GAIN --------- AG"
  78. 750  PRINT "     CALCULATE TRANDUCER PWR GAIN ----- TG"
  79. 760  PRINT "     CALCULATE CONSTANT GAIN CIRCLES -- GC
  80. 770  PRINT "     CALCULATE STABILITY CIRCLES ------ SC
  81. 780  PRINT "     CALCULATE CONSTANT NF CIRCLES ---- NF
  82. 785  PRINT "     CHANGE TERMINAL Z ---------------- CZ"
  83. 790  PRINT "     DISPLAY DEVICE S PARAMETERS ------ SP
  84. 795  PRINT "     END------------------------        END
  85. 800  INPUT "ENTER CODE"; C$
  86. 810  IF C$="ZI" THEN GOSUB 880 ELSE IF C$="ZO" THEN GOSUB 1070
  87. 820  IF C$="VG" THEN GOSUB 1260 ELSE IF C$="PG" THEN GOSUB 1400
  88. 830  IF C$="AG" THEN GOSUB 1500 ELSE IF C$="TG" THEN GOSUB 1600
  89. 840  IF C$="GC" THEN GOSUB 1950 ELSE IF C$="SC" THEN GOSUB 2510
  90. 850  IF C$="NF" THEN GOSUB 3360 ELSE IF C$="SP" THEN GOSUB 3530
  91. 855  IF C$="CZ" THEN GOSUB 1810
  92. 860  IF C$="END" THEN END ELSE IF C$="NEW" THEN 180 ELSE 690
  93. 870  REM ************** ZIN CALC *****************************
  94. 880  NR=PR(1): NX=PX(1)
  95. 890  MR=FNMR(NR,NX,GR(2),GX(2)): MX=FNMX(NR,NX,GR(2),GX(2))
  96. 900  DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  97. 910  DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  98. 920  RG(1)=SR(1,1)+FNDR(MR,MX,DR,DX): XG(1)=SX(1,1)+FNDX(MR,MX,DR,DX)
  99. 925  GOSUB 3640
  100. 930  MG(1)=FNMG(RG(1),XG(1)): AG(1)=FNAG(RG(1),XG(1))
  101. 940  PRINT: PRINT "MAG OF INPUT REF COEF ="; MG(1)
  102. 950  PRINT "ANG OF INPUT REF COEF ="; AG(1)
  103. 960  RZ(1)=Z0*FNDR(1+RG(1),XG(1),1-RG(1),-XG(1))
  104. 970  XZ(1)=Z0*FNDX(1+RG(1),XG(1),1-RG(1),-XG(1))
  105. 980  PRINT "REAL INPUT Z ="; RZ(1)
  106. 990  PRINT "IMG INPUT Z ="; XZ(1): IF T9=1 THEN RETURN
  107. 1000  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  108. 1010  IF H$<>"Y" THEN RETURN
  109. 1020  LPRINT ,: PRINT , "MAG OF INPUT REF COEF ="; MG(1)
  110. 1030  LPRINT , "ANG OF INPUT REF COEF ="; AG(1)
  111. 1040  LPRINT , "REAL INPUT Z ="; RZ(1)
  112. 1050  LPRINT , "IMG INPUT Z ="; XZ(1): LPRINT : RETURN
  113. 1060  REM ************* ZOUT CALC ***************************
  114. 1070  NR=PR(1): NX=PX(1)
  115. 1080  MR=FNMR(NR,NX,GR(1),GX(1)): MX=FNMX(NR,NX,GR(1),GX(1))
  116. 1090  DR=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
  117. 1100  DX=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
  118. 1110  RG(2)=SR(2,2)+FNDR(MR,MX,DR,DX): XG(2)=SX(2,2)+FNDX(MR,MX,DR,DX)
  119. 1115  GOSUB 3640
  120. 1120  MG(2)=FNMG(RG(2),XG(2)): AG(2)=FNAG(RG(2),XG(2))
  121. 1130  PRINT: PRINT "MAG OF OUTPUT REF COEF ="; MG(2)
  122. 1140  PRINT "ANG OF OUTPUT REF COEF ="; AG(2)
  123. 1150  RZ(2)=Z0*FNDR(1+RG(2),XG(2),1-RG(2),-XG(2))
  124. 1160  XZ(2)=Z0*FNDX(1+RG(2),XG(2),1-RG(2),-XG(2))
  125. 1170  PRINT "REAL OUTPUT Z ="; RZ(2)
  126. 1180  PRINT "IMG OUTPUT Z ="; XZ(2): IF T9=1 THEN RETURN
  127. 1190  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  128. 1200  IF H$<>"Y" THEN RETURN
  129. 1210  LPRINT  ,: LPRINT  , "MAG OF OUTPUT REF COEF ="; MG(2)
  130. 1220  LPRINT  , "ANG OF OUTPUT REF COEF ="; AG(2)
  131. 1230  LPRINT  , "REAL OUTPUT Z ="; RZ(2)
  132. 1240  LPRINT  , "IMG OUTPUT Z ="; XZ(2): LPRINT  : RETURN
  133. 1250  REM ************ VOLTAGE GAIN CALC *****************
  134. 1260  NR=FNMR(SR(2,1),SX(2,1),1+GR(2),GX(2))
  135. 1270  NX=FNMX(SR(2,1),SX(2,1),1+GR(2),GX(2))
  136. 1280  DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  137. 1290  DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  138. 1300  ER=FNMR(DR,DX,1+RG(1),XG(1)): EX=FNMX(DR,DX,1+RG(1),XG(1))
  139. 1305  GOSUB 3640
  140. 1310  AR=FNDR(NR,NX,ER,EX): AX=FNDX(NR,NX,ER,EX): AV=FNMG(AR,AX): VA=FNAG(AR,AR)
  141. 1320  PRINT: PRINT "VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
  142. 1330  VG=20*LOG10(AV): PRINT "VOLTAGE GAIN IN DB ="; VG
  143. 1340  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  144. 1350  IF H$<>"Y" THEN RETURN
  145. 1360  LPRINT  :LPRINT  ,"VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
  146. 1370  VG=20*LOG10(AV): LPRINT  ,"VOLTAGE GAIN IN DB ="; VG
  147. 1380  LPRINT  : RETURN
  148. 1390  REM *************** POWER GAIN *********************
  149. 1400  NR=SM(2,1)^2*(1-GM(2)^2)
  150. 1410  DR=(1-SM(1,1)^2)+(GM(2)^2)*(SM(2,2)^2-(FNMG(RD,XD))^2)-2*FNMR(GR(2),GX(2),RN,XN)
  151. 1420  PG=NR/DR: PRINT: PRINT "POWER GAIN ="; PG
  152. 1430  PG=10*(LOG(PG)/LOG(10)): PRINT "POWER GAIN IN DB ="; PG
  153. 1440  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  154. 1450  IF H$<>"Y" THEN RETURN
  155. 1460  PG=NR/DR: LPRINT,: LPRINT, "POWER GAIN ="; PG
  156. 1470  PG=10*(LOG(PG)/LOG(10)): LPRINT, "POWER GAIN IN DB ="; PG
  157. 1480  LPRINT: RETURN
  158. 1490  REM *************** AVAILABLE POWER *******************
  159. 1500  NR=SM(2,1)^2*(1-GM(1)^2)
  160. 1510  DR=(1-SM(2,2)^2)+(GM(1)^2)*(SM(1,1)^2-(FNMG(RD,XD))^2)-2*FNMR(GR(1),GX(1),RM,XM)
  161. 1520  PG=NR/DR: PRINT: PRINT "AVAILABLE POWER GAIN ="; PG
  162. 1530  PG=10*(LOG(PG)/LOG(10)):PRINT "AVAILABLE POWER GAIN IN DB ="; PG
  163. 1540  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  164. 1550  IF H$<>"Y" THEN RETURN
  165. 1560  PG=NR/DR: LPRINT,: LPRINT, "AVAILABLE POWER GAIN ="; PG
  166. 1570  PG=10*(LOG(PG)/LOG(10)):LPRINT  ,"AVAILABLE POWER GAIN IN DB =";PG
  167. 1580  LPRINT  : RETURN
  168. 1590  REM ************** TRANDUCER GAIN *********************
  169. 1600  NR=SM(2,1)^2*(1-GM(1)^2)*(1-GM(2)^2)
  170. 1610  R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
  171. 1620  X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
  172. 1630  R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  173. 1640  X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  174. 1650  R3=FNMR(GR(1),GX(1),GR(2),GX(2))
  175. 1660  X3=FNMX(GR(1),GX(1),GR(2),GX(2))
  176. 1670  DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
  177. 1680  DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
  178. 1690  DM=FNMG(DR,DX): TG=NR/DM^2
  179. 1700  PRINT: PRINT "TRANSDUCER POWER GAIN ="; TG
  180. 1710  TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
  181. 1720  G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
  182. 1730  GU=G0*GS*GL: PRINT "UNILATERAL TRANSDUCER GAIN ="; GU
  183. 1740  UD=10*(LOG(GU)/LOG(10)): PRINT "UNILATERAL GAIN IN DB ="; UD
  184. 1750  UM=SM(2,1)^2/((1-SM(1,1)^2)*(1-SM(2,2)^2))
  185. 1760  PRINT "MAXIMUM UNILATERAL GAIN ="; UM
  186. 1770  MD=10*LOG(UM)/LOG(10): PRINT "MAX UNILATERAL GAIN IN DB ="; MD
  187. 1780  UF=SM(1,1)*SM(1,2)*SM(2,1)*SM(2,2)/((1-SM(1,1)^2)*(1-SM(2,2)^2))
  188. 1790  UL=1/(1+UF^2): UH=1/(1-UF^2)
  189. 1800  PRINT "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )"
  190. 1810  PRINT: INPUT "WANT TO CHANGE ZIN/ZOUT (ZI/ZO/BOTH/NO)"; Q$
  191. 1820  T9=1: IF Q$="ZI" THEN GOSUB 510: GOSUB 1070: GOTO 1600
  192. 1830  IF Q$="ZO" THEN GOSUB 600: GOSUB 880: GOTO 1600
  193. 1840  IF Q$="BOTH" THEN GOSUB 510: GOSUB 1070: GOSUB 600: GOSUB 880: GOTO 1600
  194. 1850  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$: T9=0
  195. 1860  IF H$<>"Y" THEN RETURN
  196. 1870  LPRINT  ,: LPRINT  , "TRANSDUCER POWER GAIN ="; TG
  197. 1880  TD=10*(LOG(TG)/LOG(10)): LPRINT  , "TRANSDUCER GAIN IN DB ="; TD
  198. 1890  GU=G0*GS*GL: LPRINT  , "UNILATERAL TRANSDUCER GAIN ="; GU
  199. 1900  UD=10*(LOG(GU)/LOG(10)): LPRINT  , "UNILATERAL GAIN IN DB ="; UD
  200. 1910  LPRINT  , "MAXIMUM UNILATERAL GAIN ="; UM
  201. 1920  MD=10*(LOG(UM)/LOG(10)): LPRINT  ,"MAX UNILATERAL GAIN IN DB =";MD
  202. 1930  LPRINT  , "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )": LPRINT : RETURN
  203. 1940  REM ************* CONSTANT GAIN CIRCLES ****************
  204. 1950  R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
  205. 1960  X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
  206. 1970  R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  207. 1980  X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  208. 1990  G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
  209. 2000  B0=10*(LOG(G0)/LOG(10)): BS=10*LOG(GS)/LOG(10): BL=10*(LOG(GL)/LOG(10))
  210. 2010  PRINT: PRINT "G0="; G0, "GS="; GS, "GL="; GL
  211. 2020  PRINT "G0="; B0, "GS="; BS, "GL="; BL; "  IN DB"
  212. 2030  M1=1/(1-SM(1,1)^2): M2=1/(1-SM(2,2)^2)
  213. 2040  B1=10*(LOG(M1)/LOG(10)): B2=10*(LOG(M2)/LOG(10))
  214. 2050  PRINT "MAX GS="; M1, "MAX GL="; M2
  215. 2060  PRINT "MAX GS="; B1, "MAX GL="; B2; "  IN DB"
  216. 2065  GOSUB 3640
  217. 2070  CM=FNMG(SR(1,1),-SX(1,1)): CA=FNAG(SR(1,1),-SX(1,1))
  218. 2080  PRINT: PRINT "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE ="; CA
  219. 2090  ZR=Z0*FNDR(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
  220. 2100  ZX=Z0*FNDX(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
  221. 2110  PRINT "MAX SOURCE R ="; ZR, "X ="; ZX
  222. 2115  GOSUB 3640
  223. 2120  KM=FNMG(SR(2,2),-SX(2,2)): KA=FNAG(SR(2,2),-SX(2,2))
  224. 2130  PRINT: PRINT "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
  225. 2140  QR=Z0*FNDR(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
  226. 2150  QX=Z0*FNDX(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
  227. 2160  PRINT "MAX LOAD R ="; QR, "X ="; QX
  228. 2170  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  229. 2180  IF H$<>"Y" THEN 2280
  230. 2190  LPRINT  ,: LPRINT, "G0="; G0, "GS="; GS, "GL="; GL
  231. 2200  LPRINT, "G0="; B0, "GS="; BS, "GL="; BL; "  IN DB"
  232. 2210  LPRINT, "MAX GS="; M1, "MAX GL="; M2
  233. 2220  LPRINT, "MAX GS="; B1, "MAX GL="; B2; "  IN DB"
  234. 2230  LPRINT,: LPRINT, "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE =";CA
  235. 2240  LPRINT, "MAX SOURCE R ="; ZR, "X ="; ZX
  236. 2250  LPRINT,: LPRINT, "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
  237. 2260  LPRINT, "MAX LOAD R ="; QR, "X ="; QX
  238. 2270  REM ************** GAIN CHANGE **********************
  239. 2280  G1=GS/M1: D1=G1*SM(1,1)/(1-SM(1,1)^2*(1-G1))
  240. 2290  R1=SQR(1-G1)*(1-SM(1,1)^2)/(1-SM(1,1)^2*(1-G1))
  241. 2300  PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
  242. 2310  PRINT "RADIUS OF SOURCE GAIN CIRCLE ="; R1
  243. 2320  G2=GL/M2: D2=G2*SM(2,2)/(1-SM(2,2)^2*(1-G2))
  244. 2330  R2=SQR(1-G2)*(1-SM(2,2)^2)/(1-SM(2,2)^2*(1-G2))
  245. 2340  PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
  246. 2350  PRINT "RADIUS OF LOAD GAIN CIRCLE ="; R2
  247. 2360  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  248. 2370  IF H$<>"Y" THEN 2420 ELSE PRINT: LPRINT, "GS IN DB"; BS, "GL IN DB"; BL
  249. 2380  LPRINT, "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
  250. 2390  LPRINT, "RADIUS OF SOURCE GAIN CIRCLE ="; R1
  251. 2400  LPRINT,: LPRINT, "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
  252. 2410  LPRINT, "RADIUS OF LOAD GAIN CIRCLE ="; R2
  253. 2420  PRINT: INPUT "WANT TO CHANGE GAIN (GS/GL/BOTH/NO)"; Q$
  254. 2430  IF Q$<>"GL" AND Q$<>"GS" AND Q$<>"BOTH" THEN RETURN
  255. 2440  IF Q$="GS" OR Q$="BOTH" THEN INPUT "NEW GS IN DB"; BS
  256. 2450  IF Q$="GL" OR Q$="BOTH" THEN INPUT "NEW GL IN DB"; BL
  257. 2460  GS=10^(BS/10): GL=10^(BL/10)
  258. 2470  IF GS>M1 THEN PRINT "GS TOO LARGE, MAX VALUE ="; M1: GOTO 2420
  259. 2480  IF GL>M2 THEN PRINT "GL TOO LARGE, MAX VALUE ="; M2: GOTO 2420
  260. 2490  GOTO 2280
  261. 2500  REM ************* STABILITY ****************************
  262. 2510  K=(1+(FNMG(RD,XD))^2-SM(1,1)^2-SM(2,2)^2)/(2*FNMG(PR(1),PX(1)))
  263. 2520  PRINT: PRINT "AMPLIFIER WILL BE STABLE WITH CONJUGATE MATCHED SOURCE AND LOAD IF K>1: K ="; K
  264. 2530  IF K<1 THEN PRINT: PRINT "UNSTABLE": PRINT: GOTO 2980
  265. 2540  B1=1+SM(1,1)^2-SM(2,2)^2-(FNMG(RD,XD))^2
  266. 2550  B2=1+SM(2,2)^2-SM(1,1)^2-(FNMG(RD,XD))^2
  267. 2560  R=SQR(B1^2-4*(FNMG(RM,XM))^2)
  268. 2570  IF B1>0 THEN P1=(B1+R)/(2*FNMG(RM,XM)^2) ELSE P1=(B1-R)/(2*FNMG(RM,XM)^2)
  269. 2575  GOSUB 3640
  270. 2580  RC=RM*P1: XC=-XM*P1: SM=1/FNMG(RC,XC): SA=FNAG(RC,XC)
  271. 2590  SR=FNR(SM,SA): SX=FNX(SM,SA)
  272. 2600  RS=Z0*FNDR(1+SR,SX,1-SR,-SX): XS=Z0*FNDX(1+SR,SX,1-SR,-SX)
  273. 2610  PRINT: PRINT "OPT. SOURCE REF COEF MAG ="; SM
  274. 2620  PRINT "OPT. SOURCE REF COEF ANG ="; SA
  275. 2630  PRINT "OPT. REAL OF SOURCE Z ="; RS
  276. 2640  PRINT "OPT. IMG OF SOURCE Z ="; XS
  277. 2650  R=SQR(B2^2-4*(FNMG(RN,XN))^2)
  278. 2660  IF B2>0 THEN P2=(B2+R)/(2*FNMG(RN,XN)^2) ELSE P2=(B2-R)/(2*FNMG(RN,XN)^2)
  279. 2665  GOSUB 3640
  280. 2670  RC=RN*P2: XC=-XN*P2: LM=1/FNMG(RC,XC): LA=FNAG(RC,XC)
  281. 2680  LR=FNR(LM,LA): LX=FNX(LM,LA)
  282. 2690  RL=Z0*FNDR(1+LR,LX,1-LR,-LX): XL=Z0*FNDX(1+LR,LX,1-LR,-LX)
  283. 2700  PRINT: PRINT "OPT. LOAD REF COEF MAG ="; LM
  284. 2710  PRINT "OPT. LOAD REF COEF ANG ="; LA
  285. 2720  PRINT "OPT. REAL OF LOAD Z ="; RL
  286. 2730  PRINT "OPT. IMG OF LOAD Z ="; XL
  287. 2740  NR=SM(2,1)^2*(1-SM^2)*(1-LM^2)
  288. 2750  R1=1-FNMR(SR(1,1),SX(1,1),SR,SX)
  289. 2760  X1=-FNMX(SR(1,1),SX(1,1),SR,SX)
  290. 2770  R2=1-FNMR(SR(2,2),SX(2,2),LR,LX)
  291. 2780  X2=-FNMX(SR(2,2),SX(2,2),LR,LX)
  292. 2790  R3=FNMR(SR,SX,LR,LX)
  293. 2800  X3=FNMX(SR,SX,LR,LX)
  294. 2810  DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
  295. 2820  DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
  296. 2830  DM=FNMG(DR,DX): TG=NR/DM^2
  297. 2840  PRINT:PRINT "OPT. MATCH AVAILABLE PWR GAIN ="; TG
  298. 2845  TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
  299. 2850  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  300. 2860  IF H$<>"Y" THEN 2980
  301. 2870  LPRINT: LPRINT, "STABILITY CONSTANT K = "; K
  302. 2880  LPRINT, "OPT. MATCH AVAILABLE PWR GAIN ="; TG
  303. 2885  LPRINT, "TRANSDUCER GAIN IN DB ="; TD
  304. 2890  LPRINT: LPRINT, "OPT. SOURCE REF COEF MAG ="; SM
  305. 2900  LPRINT, "OPT. SOURCE REF COEF ANG ="; SA
  306. 2910  LPRINT, "OPT. REAL OF SOURCE Z ="; RS
  307. 2920  LPRINT, "OPT. IMG OF SOURCE Z ="; XS
  308. 2930  LPRINT,: LPRINT, "OPT. LOAD REF COEF MAG ="; LM
  309. 2940  LPRINT, "OPT. LOAD REF COEF ANG ="; LA
  310. 2950  LPRINT, "OPT. REAL OF LOAD Z ="; RL
  311. 2960  LPRINT, "OPT. IMG OF LOAD Z ="; XL: LPRINT
  312. 2970  REM ****************************************************
  313. 2980  LPRINT: LPRINT "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
  314. 2990  LPRINT "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
  315. 3000  LPRINT "2. SM(2,2)<1: SM(2,2) ="; SM(2,2)
  316. 3010  SF=ABS((SM(1,2)*SM(2,1)-FNMG(RM,-XM))/(SM(1,1)^2-FNMG(RD,XD)^2))
  317. 3020  LF=ABS((SM(1,2)*SM(2,1)-FNMG(RN,-XN))/(SM(2,2)^2-FNMG(RD,XD)^2))
  318. 3030  LPRINT "3. CL-RL>1: CL-RL ="; LF
  319. 3040  LPRINT "4. CS-RS>1: CS-RS ="; SF
  320. 3050  RL=ABS(SM(1,2)*SM(2,1)/(SM(2,2)^2-FNMG(RD,XD)^2))
  321. 3060  RS=ABS(SM(1,2)*SM(2,1)/(SM(1,1)^2-FNMG(RD,XD)^2))
  322. 3070  NR=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
  323. 3080  NX=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
  324. 3090  CR(2)=NR/(SM(2,2)^2-FNMG(RD,XD)^2)
  325. 3100  CX(2)=-NX/(SM(2,2)^2-FNMG(RD,XD)^2)
  326. 3110  NR=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
  327. 3120  NX=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
  328. 3130  CR(1)=NR/(SM(1,1)^2-FNMG(RD,XD)^2)
  329. 3140  CX(1)=-NX/(SM(1,1)^2-FNMG(RD,XD)^2)
  330. 3145  GOSUB 3640
  331. 3150  CM(2)=FNMG(CR(2),CX(2)): CA(2)=FNAG(CR(2),CX(2))
  332. 3155  GOSUB 3640
  333. 3160  CM(1)=FNMG(CR(1),CX(1)): CA(1)=FNAG(CR(1),CX(1))
  334. 3170  PRINT: PRINT "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
  335. 3180  PRINT "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
  336. 3190  PRINT "CIRCLE RADIUS ="; RL
  337. 3200  PRINT: PRINT "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
  338. 3210  PRINT "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
  339. 3220  PRINT "CIRCLE RADIUS ="; RS
  340. 3230  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  341. 3240  IF H$<>"Y" THEN RETURN
  342. 3250  LPRINT,: LPRINT, "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
  343. 3260  LPRINT, "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
  344. 3270  LPRINT, "2.  SM(2,2)<1: SM(2,2) ="; SM(2,2)
  345. 3280  LPRINT, "3. CL-RL>1: GL-RL ="; LF
  346. 3290  LPRINT, "4. CS-RS>1: CS-RS ="; SF
  347. 3300  LPRINT,: LPRINT, "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
  348. 3310  LPRINT, "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
  349. 3320  LPRINT, "CIRCLE RADIUS ="; RL
  350. 3330  LPRINT,: LPRINT, "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
  351. 3340  LPRINT, "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
  352. 3350  LPRINT, "CIRCLE RADIUS ="; RS: LPRINT: RETURN
  353. 3360  PRINT: INPUT "MIN. NF IN DB ="; FM: FM=10^(FM/10)
  354. 3370  INPUT "MAG OF SOURCE COEF FOR MIN NF ="; MC
  355. 3380  INPUT "ANGLE OF COEF FOR MIN NF ="; AG
  356. 3390  INPUT "NF FOR Z0 SOURCE ="; F0: F0=10^(F0/10)
  357. 3400  PRINT:INPUT "NF IN DB FOR COEF CALC ="; IC: FI=10^(IC/10)
  358. 3410  RC=FNR(MC,AC): XC=FNX(MC,AC): G0=FNMG(1+RC,XC)^2
  359. 3420  EN=(F0-FM)*G0/MC^2: NI=(FI-FM)*G0/EN
  360. 3430  EM=MC/(1+NI): RE=SQR(NI^2+NI*(1-MC^2))/(1+NI)
  361. 3440  PRINT: PRINT "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AC
  362. 3450  PRINT "RADIUS OF CIRCLE ="; RE
  363. 3460  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  364. 3470  IF H$<>"Y" THEN 3500 ELSE LPRINT:LPRINT,"NF COEF ="; IC
  365. 3480  LPRINT, "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AC
  366. 3490  LPRINT, "RADIUS OF CIRCLE ="; RE
  367. 3500  PRINT: INPUT "WANT TO TRY ANOTHER COEF (Y/N)"; Q$
  368. 3510  IF Q$="Y" THEN 3400 ELSE RETURN
  369. 3520  REM ************* S PARAMETER DISPLAY ****************
  370. 3530  PRINT: PRINT "S PARAMETERS FILE "; F$
  371. 3540  FOR J=1 TO 2: FOR I=1 TO 2
  372. 3550  PRINT "MAG OF S("; I; ","; J; ")="; SM(I,J)
  373. 3560  PRINT "ANG OF S("; I; ","; J; ")="; SA(I,J): NEXT: NEXT
  374. 3570  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  375. 3580  IF H$<>"Y" THEN RETURN
  376. 3590  LPRINT: LPRINT, "S PARAMETERS FILE "; F$
  377. 3600  FOR J=1 TO 2: FOR I=1 TO 2
  378. 3610  LPRINT, "MAG OF S("; I; ","; J; ")="; SM(I,J)
  379. 3620  LPRINT, "ANG OF S("; I; ","; J; ")="; SA(I,J)
  380. 3630  NEXT: NEXT: LPRINT: RETURN
  381. 3640  IF AR>0 GOTO 3650 ELSE GOTO 3660
  382. 3650  DEF FNAG(AR,AX)=DG*ATN(AR/AX):RETURN
  383. 3660  DEF FNAG(AR,AX)=DG*(ATN(AR/AX)+PI):RETURN
  384.